/**
 * 功能：以 26 个英文字母为数据源，随机生成单个指定长度的英文字符串。
 * @param {number} length - 要生成的字符串的长度。
 * @returns {string} - 生成的指定长度的随机字符串。
 */
export function generateSingleRandomString(length) {
  // 定义一个常量 alphabet，存储所有小写英文字母，作为生成随机字符串的字符来源
  const alphabet = 'abcdefghijklmnopqrstuvwxyz';
  // 声明一个变量 result，初始化为空字符串，用于存储最终生成的随机字符串
  let result = '';

  for (let i = 0; i < length; i++) {
    // 生成一个随机索引。Math.random() 会返回一个 0（包含）到 1（不包含）之间的随机小数，
    // 乘以 alphabet 的长度后，范围变为 0（包含）到 alphabet 长度（不包含）之间的随机小数，
    // 再使用 Math.floor() 向下取整，得到一个有效的索引值
    const randomIndex = Math.floor(Math.random() * alphabet.length);
    // 将 alphabet 中对应随机索引位置的字符追加到 result 字符串的末尾
    result += alphabet[randomIndex];
  }
  // 循环结束后，返回最终生成的随机字符串
  return result;
}
//测试generateSingleRandomString
const randomStringsOne = generateSingleRandomString(5);
console.log(randomStringsOne);

/**
 * 功能：以 26 个英文字母为数据源，随机生成指定长度的 n 个不重复英文字符串。
 * @param {number} n - 要生成的不重复字符串的数量。
 * @param {number} length - 每个字符串的长度。
 * @returns {Array<string>} - 包含 n 个不重复随机字符串的数组。
 */
export function generateRandomStrings(n, length) {
  const alphabet = 'abcdefghijklmnopqrstuvwxyz';
  const generatedStrings = new Set();

  while (generatedStrings.size < n) {
    let newString = '';
    for (let i = 0; i < length; i++) {
      const randomIndex = Math.floor(Math.random() * alphabet.length);
      newString += alphabet[randomIndex];
    }
    generatedStrings.add(newString);
  }
  return Array.from(generatedStrings);
}
//测试generateRandomStrings
const randomStrings = generateRandomStrings(5, 3);
console.log(randomStrings);
